#include"keyb.h"
#include<dos.h>
#include<conio.h>
#include<stdio.h>

void actualiza_pantalla(void);


void main(void) {
	int i,c,x,y, del;


	IniKeyb();
  textcolor(15);
	clrscr();



	for(;;) {
	  x=wherex(); y=wherey();

	  actualiza_pantalla();
		gotoxy(1,24); printf("x=%i y=%i    ",x,y);

		if(Mkbhit()) {
			c=key_ascii[Mgetch()];

			if(c>='0' &&c<='9' || c>='A' && c<='Z') printf("%c ",c);

			switch(c) {
				case ESC:            printf("ESC ");	break;
				case BARRA_INV:	     printf("BARRA_INV ");	break;
				case APOSTROFE:      printf("APOSTROFE "); break;
				case ADMIRACION:     printf("ADMIRACION "); break;
				case DELETE:         printf("DELETE ");break;

				case TAB:	           printf("TAB ");	break;
				case ENTER:	         printf("ENTER ");	break;

				case BLOQ_MAYUS:     printf("BLOQ_MAYUS ");	break;
				case SHIFT_IZQ:	     printf("SHIFT_IZQ ");	break;
				case MENOR_QUE:      printf("MENOR_QUE "); break;
				case SHIFT_DER:      printf("SHIFT_DER "); break;
				case COMA:           printf("COMA "); break;
				case MENOS:          printf("MENOS "); break;

				case PUNTO:          printf("PUNTO "); break;
				case CONTROL_IZQ:    printf("CONTROL_IZQ "); break;
				case ALT:            printf("ALT "); break;
				case ESPACIO:        printf("ESPACIO "); break;
				case ALT_GR:         printf("ALT_GR "); break;
				case CONTROL_DER:    printf("CONROL_DER "); break;
				case INSERT:         printf("INSERT "); break;
				case INICIO:         printf("INICIO "); break;
				case RE_PAG:         printf("RE_PAG "); break;
				case SUPR:           printf("SUPR "); break;
				case FIN:            printf("FIN "); break;
				case AV_PAG:         printf("AV_PAG "); break;
				case IMPR_PANT:      printf("IMPR_PANT "); break;
				case BLOQ_DESPL:     printf("BLOQ_DESPL "); break;
				case ALT_IMPR_PANT:  printf("ALT_IMPR_PANT "); break;

				case BLOQ_NUM:       printf("BLOQ_NUM "); break;
				case PAD_DIV:        printf("PAD_DIV "); break;
				case PAD_POR:        printf("PAD_POR "); break;
				case PAD_MENOS:      printf("PAD_MENOS "); break;
				case PAD_MAS:        printf("PAD_MAS "); break;
				case PAD_PUNTO:      printf("PAD_PUNTO "); break;
				case PAD_ENTER:      printf("PAD_ENTER "); break;
				case PAD_0:          printf("PAD_0 "); break;
				case PAD_1:          printf("PAD_1 "); break;
				case PAD_2:          printf("PAD_2 "); break;
				case PAD_3:          printf("PAD_3 "); break;
				case PAD_4:          printf("PAD_4 "); break;
				case PAD_5:          printf("PAD_5 "); break;
				case PAD_6:          printf("PAD_6 "); break;
				case PAD_7:          printf("PAD_7 "); break;
				case PAD_8:          printf("PAD_8 "); break;
				case PAD_9:          printf("PAD_9 "); break;

				case F1:             printf("F1 "); break;
				case F2:             printf("F2 "); break;
				case F3:             printf("F3 "); break;
				case F4:             printf("F4 "); break;
				case F5:             printf("F5 "); break;
				case F6:             printf("F6 "); break;
				case F7:             printf("F7 "); break;
				case F8:             printf("F8 "); break;
				case F9:             printf("F9 "); break;
				case F10:            printf("F10 "); break;
				case F11:            printf("F11 "); break;
				case F12:            printf("F12 "); break;

			}
			printf("                     ");
		}

		gotoxy(x,y);

		if(key[KEY_CUR_ARR]) { gotoxy(wherex(),wherey()-1); del=1; }
		if(key[KEY_CUR_ABJ]) { gotoxy(wherex(),wherey()+1); del=1; }
		if(key[KEY_CUR_IZQ]) { gotoxy(wherex()-1,wherey()); del=1; }
		if(key[KEY_CUR_DER]) { gotoxy(wherex()+1,wherey()); del=1; }
        if(del) { delay(50); del=0; }


        //if(key[KEY_ESC]) goto fin;

		if(key[KEY_Q] && key[KEY_U] && key[KEY_I] && key[KEY_T]) goto fin;
		if(key[KEY_E] && key[KEY_N] && key[KEY_D]) goto fin;
		if(key[KEY_E] && key[KEY_S] && key[KEY_C]) goto fin;

	}

fin:
	CloseKeyb();
}


void actualiza_pantalla(void) {
_setcursortype(0);
#define COLOR 9+6*
gotoxy(1,1); textcolor( COLOR key[ KEY_ESC ] ); cprintf("KEY_ESC");
gotoxy(10,1); textcolor( COLOR key[ KEY_F1 ] ); cprintf("KEY_F1");
gotoxy(18,1); textcolor( COLOR key[ KEY_F2 ] ); cprintf("KEY_F2");
gotoxy(26,1); textcolor( COLOR key[ KEY_F3 ] ); cprintf("KEY_F3");
gotoxy(34,1); textcolor( COLOR key[ KEY_F4 ] ); cprintf("KEY_F4");
gotoxy(42,1); textcolor( COLOR key[ KEY_F5 ] ); cprintf("KEY_F5");
gotoxy(50,1); textcolor( COLOR key[ KEY_F6 ] ); cprintf("KEY_F6");
gotoxy(58,1); textcolor( COLOR key[ KEY_F7 ] ); cprintf("KEY_F7");
gotoxy(66,1); textcolor( COLOR key[ KEY_F8 ] ); cprintf("KEY_F8");
gotoxy(74,1); textcolor( COLOR key[ KEY_F9 ] ); cprintf("KEY_F9");
gotoxy(56,2); textcolor( COLOR key[ KEY_F10 ] ); cprintf("KEY_F10");
gotoxy(65,2); textcolor( COLOR key[ KEY_F11 ] ); cprintf("KEY_F11");
gotoxy(73,2); textcolor( COLOR key[ KEY_F12 ] ); cprintf("KEY_F12");

gotoxy(1,3); textcolor( COLOR key[ KEY_BARRA_INV ] ); cprintf("KEY_BARRA_INV");
gotoxy(16,3); textcolor( COLOR key[ KEY_1 ] ); cprintf("KEY_1");
gotoxy(23,3); textcolor( COLOR key[ KEY_2 ] ); cprintf("KEY_2");
gotoxy(30,3); textcolor( COLOR key[ KEY_3 ] ); cprintf("KEY_3");
gotoxy(37,3); textcolor( COLOR key[ KEY_4 ] ); cprintf("KEY_4");
gotoxy(44,3); textcolor( COLOR key[ KEY_5 ] ); cprintf("KEY_5");
gotoxy(51,3); textcolor( COLOR key[ KEY_6 ] ); cprintf("KEY_6");
gotoxy(58,3); textcolor( COLOR key[ KEY_7 ] ); cprintf("KEY_7");
gotoxy(65,3); textcolor( COLOR key[ KEY_8 ] ); cprintf("KEY_8");
gotoxy(72,3); textcolor( COLOR key[ KEY_9 ] ); cprintf("KEY_9");
gotoxy(29,4); textcolor( COLOR key[ KEY_0 ] ); cprintf("KEY_0");
gotoxy(36,4); textcolor( COLOR key[ KEY_APOSTROFE ] ); cprintf("KEY_APOSTROFE");
gotoxy(51,4); textcolor( COLOR key[ KEY_ADMIRACION ] ); cprintf("KEY_ADMIRACION");
gotoxy(67,4); textcolor( COLOR key[ KEY_DELETE ] ); cprintf("KEY_DELETE");

gotoxy(1,5); textcolor( COLOR key[ KEY_TAB ] ); cprintf("KEY_TAB");
gotoxy(10,5); textcolor( COLOR key[ KEY_Q ] ); cprintf("KEY_Q");
gotoxy(17,5); textcolor( COLOR key[ KEY_W ] ); cprintf("KEY_W");
gotoxy(24,5); textcolor( COLOR key[ KEY_E ] ); cprintf("KEY_E");
gotoxy(31,5); textcolor( COLOR key[ KEY_R ] ); cprintf("KEY_R");
gotoxy(38,5); textcolor( COLOR key[ KEY_T ] ); cprintf("KEY_T");
gotoxy(45,5); textcolor( COLOR key[ KEY_Y ] ); cprintf("KEY_Y");
gotoxy(52,5); textcolor( COLOR key[ KEY_U ] ); cprintf("KEY_U");
gotoxy(59,5); textcolor( COLOR key[ KEY_I ] ); cprintf("KEY_I");
gotoxy(66,5); textcolor( COLOR key[ KEY_O ] ); cprintf("KEY_O");
gotoxy(73,5); textcolor( COLOR key[ KEY_P ] ); cprintf("KEY_P");
gotoxy(27,6); textcolor( COLOR key[ KEY_ABRE_CORCHETE ] ); cprintf("KEY_ABRE_CORCHETE");
gotoxy(47,6); textcolor( COLOR key[ KEY_CIERRA_CORCHETE ] ); cprintf("KEY_CIERRA_CORCHETE");
gotoxy(69,6); textcolor( COLOR key[ KEY_ENTER ] ); cprintf("KEY_ENTER");

gotoxy(1,7); textcolor( COLOR key[ KEY_BLOQ_MAYUS ] ); cprintf("KEY_BLOQ_MAYUS");
gotoxy(17,7); textcolor( COLOR key[ KEY_A ] ); cprintf("KEY_A");
gotoxy(24,7); textcolor( COLOR key[ KEY_S ] ); cprintf("KEY_S");
gotoxy(31,7); textcolor( COLOR key[ KEY_D ] ); cprintf("KEY_D");
gotoxy(38,7); textcolor( COLOR key[ KEY_F ] ); cprintf("KEY_F");
gotoxy(45,7); textcolor( COLOR key[ KEY_G ] ); cprintf("KEY_G");
gotoxy(52,7); textcolor( COLOR key[ KEY_H ] ); cprintf("KEY_H");
gotoxy(59,7); textcolor( COLOR key[ KEY_J ] ); cprintf("KEY_J");
gotoxy(66,7); textcolor( COLOR key[ KEY_K ] ); cprintf("KEY_K");
gotoxy(73,7); textcolor( COLOR key[ KEY_L ] ); cprintf("KEY_L");
gotoxy(40,8); textcolor( COLOR key[ KEY_NN ] ); cprintf("KEY_NN");
gotoxy(47,8); textcolor( COLOR key[ KEY_ABRE_LLAVE ] ); cprintf("KEY_ABRE_LLAVE");
gotoxy(62,8); textcolor( COLOR key[ KEY_CIERRA_LLAVE ] ); cprintf("KEY_CIERRA_LLAVE");

gotoxy(1,9); textcolor( COLOR key[ KEY_SHIFT_IZQ ] ); cprintf("KEY_SHIFT_IZQ");
gotoxy(16,9); textcolor( COLOR key[ KEY_MENOR_QUE ] ); cprintf("KEY_MENOR_QUE");
gotoxy(31,9); textcolor( COLOR key[ KEY_Z ] ); cprintf("KEY_Z");
gotoxy(38,9); textcolor( COLOR key[ KEY_X ] ); cprintf("KEY_X");
gotoxy(45,9); textcolor( COLOR key[ KEY_C ] ); cprintf("KEY_C");
gotoxy(52,9); textcolor( COLOR key[ KEY_V ] ); cprintf("KEY_V");
gotoxy(59,9); textcolor( COLOR key[ KEY_B ] ); cprintf("KEY_B");
gotoxy(66,9); textcolor( COLOR key[ KEY_N ] ); cprintf("KEY_N");
gotoxy(73,9); textcolor( COLOR key[ KEY_M ] ); cprintf("KEY_M");
gotoxy(33,10); textcolor( COLOR key[ KEY_COMA ] ); cprintf("KEY_COMA");
gotoxy(43,10); textcolor( COLOR key[ KEY_PUNTO ] ); cprintf("KEY_PUNTO");
gotoxy(54,10); textcolor( COLOR key[ KEY_MENOS ] ); cprintf("KEY_MENOS");
gotoxy(65,10); textcolor( COLOR key[ KEY_SHIFT_DER ] ); cprintf("KEY_SHIFT_DER");

gotoxy(1,11); textcolor( COLOR key[ KEY_CONTROL_IZQ ] ); cprintf("KEY_CONTROL_IZQ");
gotoxy(18,11); textcolor( COLOR key[ KEY_ALT ] ); cprintf("KEY_ALT");
gotoxy(27,11); textcolor( COLOR key[ KEY_ESPACIO ] ); cprintf("KEY_ESPACIO");
gotoxy(40,11); textcolor( COLOR key[ KEY_ALT_GR ] ); cprintf("KEY_ALT_GR");
gotoxy(52,11); textcolor( COLOR key[ KEY_CONTROL_DER ] ); cprintf("KEY_CONTROL_DER");

gotoxy(1,12); textcolor( COLOR key[ KEY_IMPR_PANT ] ); cprintf("KEY_IMPR_PANT");
gotoxy(16,12); textcolor( COLOR key[ KEY_ALT_IMPR_PANT ] ); cprintf("KEY_ALT_IMPR_PANT");
gotoxy(35,12); textcolor( COLOR key[ KEY_BLOQ_DESPL ] ); cprintf("KEY_BLOQ_DESPL");
gotoxy(51,12); textcolor( COLOR key[ KEY_PAUSA ] ); cprintf("KEY_PAUSA");

gotoxy(1,13); textcolor( COLOR key[ KEY_INSERT ] ); cprintf("KEY_INSERT");
gotoxy(13,13); textcolor( COLOR key[ KEY_INICIO ] ); cprintf("KEY_INICIO");
gotoxy(25,13); textcolor( COLOR key[ KEY_RE_PAG ] ); cprintf("KEY_RE_PAG");
gotoxy(42,13); textcolor( COLOR key[ KEY_CUR_ARR ] ); cprintf("KEY_CUR_ARR");
gotoxy(55,13); textcolor( COLOR key[ KEY_CUR_DER ] ); cprintf("KEY_CUR_DER");

gotoxy(1,14); textcolor( COLOR key[ KEY_SUPR ] ); cprintf("KEY_SUPR");
gotoxy(13,14); textcolor( COLOR key[ KEY_FIN ] ); cprintf("KEY_FIN");
gotoxy(25,14); textcolor( COLOR key[ KEY_AV_PAG ] ); cprintf("KEY_AV_PAG");
gotoxy(42,14); textcolor( COLOR key[ KEY_CUR_IZQ ] ); cprintf("KEY_CUR_IZQ");
gotoxy(55,14); textcolor( COLOR key[ KEY_CUR_ABJ ] ); cprintf("KEY_CUR_ABJ");

gotoxy(1,15); textcolor( COLOR key[ KEY_BLOQ_NUM ] ); cprintf("KEY_BLOQ_NUM");
gotoxy(19,15); textcolor( COLOR key[ KEY_PAD_DIV ] ); cprintf("KEY_PAD_DIV");
gotoxy(32,15); textcolor( COLOR key[ KEY_PAD_MUL ] ); cprintf("KEY_PAD_MUL");
gotoxy(45,15); textcolor( COLOR key[ KEY_PAD_MENOS ] ); cprintf("KEY_PAD_MENOS");

gotoxy(1,16); textcolor( COLOR key[ KEY_PAD_7 ] ); cprintf("KEY_PAD_7");
gotoxy(12,16); textcolor( COLOR key[ KEY_PAD_8 ] ); cprintf("KEY_PAD_8");
gotoxy(23,16); textcolor( COLOR key[ KEY_PAD_9 ] ); cprintf("KEY_PAD_9");
gotoxy(34,16); textcolor( COLOR key[ KEY_PAD_MAS ] ); cprintf("KEY_PAD_MAS");

gotoxy(1,17); textcolor( COLOR key[ KEY_PAD_4 ] ); cprintf("KEY_PAD_4");
gotoxy(12,17); textcolor( COLOR key[ KEY_PAD_5 ] ); cprintf("KEY_PAD_5");
gotoxy(23,17); textcolor( COLOR key[ KEY_PAD_6 ] ); cprintf("KEY_PAD_6");

gotoxy(1,18); textcolor( COLOR key[ KEY_PAD_1 ] ); cprintf("KEY_PAD_1");
gotoxy(12,18); textcolor( COLOR key[ KEY_PAD_2 ] ); cprintf("KEY_PAD_2");
gotoxy(23,18); textcolor( COLOR key[ KEY_PAD_3 ] ); cprintf("KEY_PAD_3");

gotoxy(34,18); textcolor( COLOR key[ KEY_PAD_ENTER ] ); cprintf("KEY_PAD_ENTER");
gotoxy(49,18); textcolor( COLOR key[ KEY_PAD_0 ] ); cprintf("KEY_PAD_0");
gotoxy(60,18); textcolor( COLOR key[ KEY_PAD_PUNTO ] ); cprintf("KEY_PAD_PUNTO");


gotoxy(1,20); textcolor(WHITE); cprintf("Press Q,U,I,T to Quit.");

_setcursortype(2);

}

/*
void pinta_pantalla(void) {
	gotoxy(1,1);
  textcolor(7);
	cprintf("\
KEY_ESC  KEY_F1  KEY_F2  KEY_F3  KEY_F4  KEY_F5  KEY_F6  KEY_F7  KEY_F8  KEY_F9 \
                                                       KEY_F10  KEY_F1  KEY_F12 \
KEY_BARRA_INV  KEY_1  KEY_2  KEY_3  KEY_4  KEY_5  KEY_6  KEY_7  KEY_8  KEY_9    \
                            KEY_0  KEY_APOSTROFE  KEY_ADMIRACION  KEY_DELETE    \
KEY_TAB  KEY_Q  KEY_W  KEY_E  KEY_R  KEY_T  KEY_Y  KEY_U  KEY_I  KEY_O  KEY_P   \
                          KEY_ABRE_CORCHETE   KEY_CIERRA_CORCHETE   KEY_ENTER   \
KEY_BLOQ_MAYUS  KEY_A  KEY_S  KEY_D  KEY_F  KEY_G  KEY_H  KEY_J  KEY_K  KEY_L   \
                                       KEY_NN KEY_ABRE_LLAVE KEY_CIERRA_LLAVE   \
KEY_SHIFT_IZQ  KEY_MENOR_QUE  KEY_Z  KEY_X  KEY_C  KEY_V  KEY_B  KEY_N  KEY_M   \
                                KEY_COMA  KEY_PUNTO  KEY_MENOS  KEY_SHIFT_DER   \
KEY_CONTROL_IZQ  KEY_ALT  KEY_ESPACIO  KEY_ALT_GR  KEY_CONTROL_DER              \
KEY_IMPR_PANT  KEY_ALT_IMPR_PANT  KEY_BLOQ_DESPL  KEY_PAUSA                     \
KEY_INSERT  KEY_INICIO  KEY_RE_PAG       KEY_CUR_ARR  KEY_CUR_DER               \
KEY_SUPR    KEY_FIN     KEY_AV_PAG       KEY_CUR_IZQ  KEY_CUR_ABJ               \
KEY_BLOQ_NUM      KEY_PAD_DIV  KEY_PAD_POR  KEY_PAD_MENOS                       \
KEY_PAD_7  KEY_PAD_8  KEY_PAD_9  KEY_PAD_MAS                                    \
KEY_PAD_4  KEY_PAD_5  KEY_PAD_6                                                 \
KEY_PAD_1  KEY_PAD_2  KEY_PAD_3  KEY_PAD_ENTER  KEY_PAD_0  KEY_PAD_PUNTO");
} */